iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
0

Tensorflow將創建神經網路的工程分成兩個部分:計算圖的定義與圖的執行。這個設計讓TensorFlow能夠多平台工作以及執行Tensorflow,也因此更加強大。

計算圖

計算圖是一個包含節點和邊的網路。其中定義了所有的數據,也就是張量(tensor)對象(常量、變量和占位符),同時定義要執行的的所有計算,即運算操作對象(Operation Object,簡稱OP)。

每個節點可以有零個或多個輸入,但只有一個輸出。網路中的節點表示對象(張量和運算操作),邊表示運算操作之間流動的張量。計算圖定義神經網絡的藍圖,但其中的張量還沒有相關的數值。

計算圖的執行:使用會話對象(session)來實現計算圖的執行。會話對象封裝了評估張量和操作對象的環境。這裏真正實現了運算操作並將信息從網絡的一層傳遞到另外一層。不同張量對象的值僅在會話對象中被初始化、訪問和保存。在此之前張量對象只被抽象定義,在會話中才被賦予實際的意義。

範例

在此以兩個向量相加為例給出計算圖。假設有兩個向量 v_1 和 v_2 將作為輸入提供給 Add 操作。建立的計算圖如下:
https://ithelp.ithome.com.tw/upload/images/20191006/20120698i5jCus1bnh.jpg

定義該圖的相應代碼如下所示:

v_1 = tf.constant([1,2,3,4])
v_2 = tf.constant([2,1,5,3])
v_add = tf.add(v_1,v_2)

然後在會話中執行這個圖:

with tf.Session as sess:
    print(sess.run(v_add)

以上兩行相當於下面的程式碼。上面的程式碼的優點是不必顯式寫出關閉會話的命令:

sess = tf.session()
print(sess.run(v_add))
sess.close()

運行結果是顯示兩個向量的和:
{3 3 8 7}

請記住,每個會話都需要使用 close() 來明確關閉,而 with 格式可以在運行結束時隱式關閉會話。


上一篇
Tensor入門(2)
下一篇
tensorflow矩陣運算
系列文
30天鍊成機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言